home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / grass / src / my_turn.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-08  |  4.3 KB  |  209 lines

  1.  
  2. /*
  3.     自分の行動ターンのサブルーチン
  4.  
  5.         By 五味
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <sub.h>
  10.  
  11.     extern int acom,turn,gold,f,i,j,o,k[],ko[],hp[],x[],y[];
  12.     extern int mx[],my[],ht[],th[],dhp[],tx[],ty[],bx[],by[];
  13.     extern char c,*nn[];
  14.  
  15. void    map_drow(void);
  16.  
  17.  
  18. my_turn()
  19. {
  20.  
  21. acom = 0;    /* コマンド終了フラグ */
  22.  
  23. while( acom == 0 )
  24.     {
  25.     f=0;
  26.     for( i=0 ; i<100 ; i++ )
  27.         {
  28.         if( k[i]!=-1 )
  29.             f++;
  30.         }
  31.  
  32.     printf("--------------------------\n");
  33.     printf(" 第%dターン    城の全財産 %5d  部隊数 %2d\n\n",turn,gold,f);
  34.     printf("  1.味方情報        2.敵情報\n");
  35.     printf("  3.傭兵を雇う        0.ターンを終える\n");
  36.     printf("  4.マップを見る\n\n");
  37.  
  38.     c = getch();
  39.     switch( c )
  40.         {
  41.     case'1':
  42.         f=0;
  43.         for( i=0 ; i<100 ; i++ )
  44.             {
  45.             if( k[i]!=-1 )
  46.                 {
  47.                 printf(" 第%2d部隊 %-16s HP %2d 現在位置(%3d, %3d) 目的地(%3d,%3d)\n",i+1,nn[k[i]],hp[i],x[i],y[i],mx[i],my[i]);
  48.                 if( (i+1)/10*10 == i+1 )
  49.                     {
  50.                     getch();
  51.                     printf("\n");
  52.                     }
  53.                 f++;
  54.                 }
  55.             }
  56.         if( f==0 )
  57.             {
  58.             printf(" 部隊が存在しませんので、雇ってください。\n それとも、討伐を諦めますか?(y/n)\n\n");
  59.             c = getch();
  60.             if( c=='Y' || c=='y' )
  61.                 {
  62. printf(" 第%dターン。ついにあなたは、ファブル軍団掃討を諦めた…。\n",turn);
  63.                 getch();
  64.                 return(1);
  65.                 }
  66.             }
  67.         printf("\n");
  68.         break;
  69.  
  70.     case'2':
  71.         f=0;
  72.         for( i=0 ; i<5 ; i++ )
  73.             {
  74.             if( ht[i]!=0 )
  75.                 {
  76.     printf("\t砦の位置(%3d,%3d) 城主:%-16s",tx[i],ty[i],nn[i+20]);
  77.                 if( th[i]!=0 )
  78.                     printf(" 陥落\n");
  79.                 else
  80.                     printf("\n");
  81.                 f++;
  82.                 }
  83.             }
  84.  
  85.         printf("\n");
  86.         if( f==0 )
  87.             printf(" 敵の砦は、まだ見つかっていません。早く見つけましょう。\n\n");
  88.         break;
  89.  
  90.     case'3':
  91. come:
  92.         f=100;
  93.         for( i=99 ; i>=0 ; i-- )
  94.             {
  95.             if( k[i] == -1 )
  96.                 f=i;
  97.             }
  98.         if( f == 100 )
  99.             {
  100.         printf(" すでに100部隊います。もう雇えません。\n\n");
  101.             getch();
  102.             break;
  103.             }
  104.  
  105.         printf("-----------------------------------\n");
  106.         printf("  1.ゴブリン       5        11.魔法使い         100\n");
  107.         printf("  2.オーク          10        12.盗賊         200\n");
  108.         printf("  3.オーガー      20        13.聖騎士         700\n");
  109.         printf("  4.トロール      50        14.傭兵         300\n");
  110.         printf("  5.ジャイアント     100        15.勇者        1000\n");
  111.         printf("  6.ミノタウロス      80        16.美人女戦士         300\n");
  112.         printf("  7.サラマンダー     300        17.ブス女戦士         300\n");
  113.         printf("  8.ドラゴン    1000        18.従者          10\n");
  114.         printf("  9.蛮族の戦士      30        19.ドワーフ戦士     100\n");
  115.         printf("  10.騎士          50        20.精霊使い         120\n");
  116.         printf("-----------------------------------\n\n");
  117.  
  118.         printf(" どれを雇いますか?(キャンセルは0) ");
  119.  
  120.         i = getnum();
  121.         printf("\n\n");
  122.         if( i<1 || i>20)
  123.             break;
  124.         i--;
  125.         if( gold < ko[i] )
  126.             {
  127.             printf(" お金がないので、%sは雇えません。\n\n",nn[i]);
  128.             break;
  129.             }
  130.  
  131.         k[f]  = i;
  132.         x[f]  = 100;
  133.         y[f]  = 20;
  134.         hp[f] = dhp[i];
  135.  
  136.         printf(" 第%d部隊に%sを設定しました。\n",f+1,nn[i]);
  137.  
  138.     do    {
  139.         printf(" %sを、どこへ向かわせますか?\n",nn[i]);
  140.         printf(" 城の位置は(100, 20)です。\n\n");
  141.  
  142.         do    {
  143.             printf("\tX座標(0~200)=");
  144.             j = getnum();
  145.             printf("\n");
  146.             }while( j<0 || j>200 );
  147.         mx[f] = j;
  148.  
  149.         do    {
  150.             printf("\tY座標(0~200)=");
  151.             j = getnum();
  152.             printf("\n");
  153.             }while( j<0 || j>200 );
  154.         my[f] = j;
  155.  
  156. printf("\n 出発させますが、よろしいですか?(変更は1、キャンセルは0)\n\n");
  157.  
  158.         }while( ( c=getch() ) =='1' );
  159.  
  160.         if( c=='0' )
  161.             {
  162.             j=ko[i]/10;
  163.             printf(" キャンセル料、%dを払いました。\n\n",j);
  164.             gold -= j;
  165.             k[i]=-1;
  166.             break;
  167.             }
  168.  
  169.         gold -= ko[i];    /* 代入演算子だ~! */
  170.         goto come;
  171.  
  172.     case'4':
  173.         map_drow();
  174.         break;
  175.  
  176.     case'T':
  177.     case't':
  178.         printf("\t宝のある場所の一覧なのだ\n\n");
  179.         for( i=0 ; i<30 ; i=i+3 )
  180.             printf(" (%3d,%3d)(%3d,%3d)(%3d,%3d)\n",bx[i],by[i],bx[i+1],by[i+1],bx[i+2],by[i+2]);
  181.         printf("\n\tみんなには内緒だよ\n\n");
  182.         break;
  183.  
  184.     case'B':
  185.     case'b':
  186.         for( i=0 ; i<5 ; i++ )
  187.             {
  188.     printf("\t砦の位置(%3d,%3d) 城主:%-16s",tx[i],ty[i],nn[i+20]);
  189.             if( th[i]!=0 )
  190.                 printf(" 陥落\n");
  191.             else
  192.                 if( ht[i]!=0 )
  193.                     printf("\n");
  194.                 else
  195.                     printf(" 未発見\n");
  196.             }
  197.         printf("\n");
  198.         break;
  199.  
  200.     default:
  201.         acom = 1;    /* コマンド終了 */
  202.         break;
  203.         }
  204.  
  205.     }
  206.  
  207.     return(0);
  208. }
  209.